home *** CD-ROM | disk | FTP | other *** search
/ Carousel / CAROUSEL.cdr / mactosh / utilprn / hpdeskje.sit / HPDJet ƒ / prglobals.h < prev    next >
Text File  |  1989-04-02  |  7KB  |  198 lines

  1. /* 02.04.1989  amn  (latest edit) */
  2.  
  3. /* prglobals.h  -  global data types and variables. */
  4.  
  5. /* Authors:  Ari Mujunen (amn@hutcs.hut.fi) and Olli Arnberg (oar@hutcs.hut.fi). */
  6. /* Copyright Ari Mujunen, Olli Arnberg 1989. */
  7. /* You may redistribute the driver (=printer resource file, source files, */
  8. /* documentation file(s), and the file 'Copyright and Source Offer') */
  9. /* only _non-commercially_ and _in its entirety_. */
  10. /* See the file 'Copyright and Source Offer' and/or documentation for details. */
  11. /* Acknowledgements:  Special thanks to Mr. Earle R. Horton for his 'Daisy' */
  12. /* daisywheel printer driver and its source code published in 'MacTutor', Nov-Dec 1987. */
  13. /* This driver served as a basis and inspiration for our work.  It also */
  14. /* proofed that a Macintosh printer driver can be done despite the lack of */
  15. /* documentation from Apple. */
  16.  
  17. /* Change history: */
  18. /* Version  When        Who      Why */
  19. /* 2.0      18.11.1988  amn      Preparing to use fewer globals. */
  20. /*          19.11.1988  amn      Font characterization table removed.  We are not */
  21. /*                               required to give a pointer to it to Font Mgr. */
  22. /*          20.11.1988  amn      Resolution constants (DPI...) for passing resolution */
  23. /*                               info from PDEF 4 to PDEF 1 & 5. */
  24. /*          21.11.1988  amn,oar  Change of names (xPrintGlobals...). */
  25. /*          23.11.1988  amn      Global print record. */
  26. /*          24.11.1988  amn      Read printed listing... */
  27. /*          09.12.1988  amn      User-specifiable setting 'movePrintPositionBeforeEachWord'. */
  28. /*                               Handles for spool file header and page picture. */
  29. /*          15.12.1988  amn      Is idle proc ours or application's? */
  30. /*          03.02.1989  amn      RESID-constants. */
  31. /*          06.02.1989  amn      Type tSettings commented. */
  32. /*          10.03.1989  amn      Application-specific picture comment type. */
  33. /*                               (For original string lengths; from TechNote 181.) */
  34. /*          25.03.1989  amn,oar  Global resource file refNums removed. */
  35. /*                               (They change when a new appl. starts in MultiFinder.) */
  36. /*          28.03.1989  amn      Settable printer origin. */
  37. /*          30.03.1989  amn,oar  Flag to indicate we are _only_ creating a spool file. */
  38. /* 2.1      02.04.1989  amn,oar  Released version. */
  39.  
  40.  
  41. /***********/
  42. /* Defines */
  43.  
  44. #define nil (0L)
  45.  
  46. #define OUR_MAGIC_NUMBER 's89^'
  47.  
  48. #define PRINTING_MANAGER_VERSION (3)
  49.  
  50. /* Resource id -8192 belongs to the printer resource file, */
  51. /* id -4080 to the Chooser package. */
  52. #define RESID_OWNED_BY_PDEF (-8192)
  53. #define RESID_OWNED_BY_CHOOSER_PACK (-4080)
  54.  
  55. /* Used in PDEF 0 & 5 when feeding manually. */
  56. #define SHEETDIALOG (-8193)
  57.  
  58. /* In dialogs the 'OK' and 'Cancel' buttons are always first. */
  59. #define OKBUTTON 1
  60. #define CANCELBUTTON 2
  61.  
  62. /* Resolution information as passed in the low-order byte of the field 'prStl.wDev'. */
  63. #define RES_300 0
  64. #define RES_150 1
  65. #define RES_100 2
  66. #define RES_75 3
  67. #define RES_DRAFT 4
  68. #define RES_DEFAULT RES_75
  69. #define RES_MASK 0x0007
  70.  
  71. /* With this macro we get out the xPrint globals. */
  72. #define GET_XPRINT_GLOBALS ((ptXprintGlobals)(*((*GetDCtlEntry(iPrDrvrRef))->dCtlStorage)))
  73.  
  74.  
  75. /************/
  76. /* Typedefs */
  77.  
  78. /* LightspeedC header files don't have this Printer Driver Control call parameter block. */
  79. typedef struct {
  80.     QElemPtr qLink;
  81.     int qType;
  82.     int ioTrap;
  83.     Ptr ioCmdAddr;
  84.     ProcPtr ioCompletion;
  85.     OsErr ioResult;
  86.     StringPtr ioNamePtr;
  87.     int ioVRefNum;
  88.     int ioRefNum;
  89.     int csCode;
  90.     long lParam1;
  91.     long lParam2;
  92.     long lParam3;
  93. /*  ==== */
  94. } tPrParam, *ptPrParam, **htPrParam;
  95.  
  96. typedef struct {
  97.     int port;  /* 0=modem, 1=printer port */
  98.     int baud;  /* baud rate part of Driver Reset Info, IM II-250 */
  99.     int xonXoff;  /* TRUE/FALSE */
  100.     Point printerOrigin;  /* 300 dpi dots from paper upper left corner */
  101.     int screenDumpResolution;  /* 75, 100, 150, 300 dpi */
  102.     Boolean useOnlyPCLLevel3Features;
  103.     Boolean movePrintPositionBeforeEachWord;
  104. } tSettings, *ptSettings, **htSettings;
  105.  
  106. typedef unsigned char tFileName[64];
  107.  
  108. /* The comment of kind '100' we use to record the original length of the string */
  109. /* to be drawn next ("ApplicationComment" from TechNote 181). */
  110. typedef struct {
  111.     OSType applicationSignature;  /* the signature of our driver, 's89^' */
  112.     int localKind;  /* we have selected '0' */
  113.     int originalLengthOfNextTextInPixels;
  114. } tApplicationComment, **htApplicationComment;
  115.     
  116.  
  117. /***********/
  118. /* Globals */
  119. /* Shared storage, defined and initialized by the driver code, accessed elsewhere. */
  120.  
  121. #ifdef DRIVER_MODULE
  122. /* Magic number to make sure these globals are ours. */
  123. static long magicNumber = OUR_MAGIC_NUMBER;
  124. #else
  125. typedef struct {
  126. long magicNumber;
  127. #endif
  128.  
  129.  
  130. /* Driver specific settings: which port to use etc. */
  131. tSettings currentSettings;
  132.  
  133.  
  134. #ifdef DRIVER_MODULE
  135.  
  136. /* High-level driver (PDEF0-5) communicates with low-level (XPrint) */
  137. /* using this initialized parameter block. */
  138. static tPrParam xPrintParameterBlock = {
  139.     nil,            /* qLink */
  140.     0,                /* qType */
  141.     0,                /* ioTrap */
  142.     nil,            /* ioCmdAddr */
  143.     nil,            /* ioCompletion */
  144.     0,                /* ioResult */
  145.     nil,            /* ioNamePtr */
  146.     0,                /* ioVRefNum */
  147.     iPrDrvrRef,        /* ioRefNum */
  148.     0,                /* csCode */
  149.     0L, 0L, 0L        /* lParam */
  150. };
  151.  
  152. /* The previous 'xPrintParameterBlock.ioNamePtr' always points to this name ('.Print'). */
  153. static tFileName xPrintName = sPrDrvr;
  154.  
  155. #else
  156.  
  157. tPrParam xPrintParameterBlock;
  158. tFileName xPrintName;
  159.  
  160. #endif
  161.  
  162. /* Used when low-level driver (XPrint) writes to the serial driver. */
  163. ParamBlockRec serialParameterBlock;
  164.  
  165. /* The strings (user-definable) which perform printer control functions as FF, LF etc. */
  166. Str255 prinitstr;
  167. tFileName prlfstr;
  168. tFileName prtopstr;
  169. tFileName preopstr;
  170. tFileName preofstr;
  171.  
  172. /* Information from OpenDoc until CloseDoc/PrPicFile: */
  173. TPrint printRecord;  /* page range, idle procedure address etc. */
  174. Boolean applicationOwnsIdleProc;
  175. tFileName spoolFileName;  /* print record contains a pointer to this, thus it is global */
  176. int spoolFileRefNum;  /* needed in customized QD get&put picture data procedures */
  177.  
  178. #ifdef DRIVER_MODULE
  179. static Boolean spoolFileIsNamedAndPermanent = FALSE;
  180. static Boolean spoolFileAlreadyNamed = FALSE;
  181. #else
  182. Boolean spoolFileIsNamedAndPermanent;
  183. Boolean spoolFileAlreadyNamed;
  184. #endif
  185.  
  186. int pageCounter;
  187. THPfHeader hSpoolFileHeader;  /* used in PDEF 1 from OpenDoc until CloseDoc */
  188. PicHandle hPagePicture;  /* used in PDEF 1 from OpenPage until ClosePage */
  189. int originalStringLength;  /* in PDEF5: from length picture comment until stdText */
  190.  
  191. /* SysEnvRec theWorld;  has been withdrawn:  we don't have the new ROMs. */
  192.  
  193.  
  194. #ifdef DRIVER_MODULE
  195. #else
  196. } tXprintGlobals, *ptXprintGlobals, **htXprintGlobals;
  197. #endif
  198.